#pragma once
#include "Runtime/BattleFirePrefix.h"
namespace Alice{
    struct PassParameter
    {
        int x;
    };
    /** Flags to annotate a pass with when calling AddPass. */
    enum class ERDGPassFlags : uint16
    {
        /** Pass doesn't have any inputs or outputs tracked by the graph. This may only be used by the parameterless AddPass function. */
        None = 0,

        /** Pass uses rasterization on the graphics pipe. */
        Raster = 1 << 0,

        /** Pass uses compute on the graphics pipe. */
        Compute = 1 << 1,

        /** Pass uses compute on the async compute pipe. */
        AsyncCompute = 1 << 2,

        /** Pass uses copy commands on the graphics pipe. */
        Copy = 1 << 3,

        /** Pass (and its producers) will never be culled. Necessary if outputs cannot be tracked by the graph. */
        NeverCull = 1 << 4,

        /** Render pass begin / end is skipped and left to the user. Only valid when combined with 'Raster'. Disables render pass merging for the pass. */
        SkipRenderPass = 1 << 5,

        /** Pass will never have its render pass merged with other passes. */
        NeverMerge = 1 << 6,

        /** Pass will never run off the render thread. */
        NeverParallel = 1 << 7,

        /** Pass uses copy commands but writes to a staging resource. */
        Readback = Copy | NeverCull
    };
    ENUM_CLASS_FLAGS(ERDGPassFlags)
}